package org.colswe.junitlab.modelo;

import java.util.ArrayList;
import java.util.Collection;
/**
 * Clase encargada de guardar los datos en sesión.
 * Implementa el patrón Singleton:
 * 		- getInstance inicializa la instancia del sistema una sola vez
 * 		- El constructor es privado
 * @author Miguel Ángel Cubides
 *
 */
public final class Sistema {
	
	/**
	 * Atributos:
	 * entidades: Almacena los días festivos ingresados al sistema.
	 * instancia: Única instancia de la clase.
	 */
	private Collection<Festivo> entidades;

	private static Sistema instancia;

	/**
	 * Método que devuelve la instancia de Sistema,
	 * garantiza que el constructor sea llamado una sola vez.
	 * 
	 * @return instancia del sistema 
	 */
	public static synchronized Sistema getInstance(){
		if (instancia == null){
			instancia = new Sistema();
		}
		return instancia;
	}
	/**
	 * Constructor privado, para que ninguna clase externa pueda hacer una 
	 * instancia de éste.
	 */
	private Sistema() {
		super();
		entidades = new ArrayList<Festivo>();
	}
	/**
	 * Método que devuelve la colección de festivos del sistema
	 * @return colección de festivos del sistema
	 */
	public Collection<Festivo> getEntidades() {
		return entidades;
	}
	/**
	 * Método para asignar un valor a la colección de festivos del sistema
	 * @param colección de festivos.
	 */
	public void setEntidades(Collection<Festivo> entidades) {
		this.entidades = entidades;
	}

}
